#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_wifi.h"
#include "esp_now.h"
#include "nvs_flash.h"

#define led_gpio GPIO_NUM_27
#define led_key GPIO_NUM_0
int gpio_level=0;

void led_run_task(void* param)
{

    while(1)
    {
 //       gpio_level=gpio_level?0:1;
        gpio_set_level(led_gpio,gpio_level);
       vTaskDelay(pdMS_TO_TICKS(50));        
    }

}
void key_run_task(void* param)
{

    while(1)
    {
       if(gpio_get_level(led_key)) 
       {
            gpio_level=0;
       }
        else
        {
            gpio_level=1;
        }
       vTaskDelay(pdMS_TO_TICKS(50));        
    }

}

void app_main(void)
{
 
  nvs_flash_init();
  esp_netif_init();
  esp_event_loop_create_default();
  esp_netif_create_default_wifi_ap();
  wifi_init_config_t wifi_config=WIFI_INIT_CONFIG_DEFAULT();
  esp_wifi_init(&wifi_config);

    esp_now_init();
    gpio_config_t led_cfg={
        .pin_bit_mask=(1<<led_gpio),
        .pull_up_en=GPIO_PULLDOWN_DISABLE,
        .pull_down_en=GPIO_PULLDOWN_DISABLE,
        .mode=GPIO_MODE_OUTPUT,
        .intr_type=GPIO_INTR_DISABLE,
    };
    gpio_config_t key_cfg={
        .pin_bit_mask=(1<<led_key),
        .pull_up_en=GPIO_PULLDOWN_DISABLE,
        .pull_down_en=GPIO_PULLDOWN_DISABLE,
        .mode=GPIO_MODE_INPUT,
        .intr_type=GPIO_INTR_DISABLE,
    };
    gpio_config(&led_cfg);
    gpio_config(&key_cfg);

    xTaskCreatePinnedToCore(led_run_task,"led",2048,NULL,3,NULL,1);
    xTaskCreatePinnedToCore(key_run_task,"key",2048,NULL,2,NULL,1);
   
}

